In the previous sections we saw how modularizing a program according to the classes of its objects helps improve understanding and simplifies maintenance. Further, we saw how a derived class inherits the members of the original class, and how polymorphism allows the same messages to be sent to objects of either class.
The benefits of these OOP qualities to software engineering efforts should not be underestimated. If a change needs to be made to a piece of software in order to accomodate changing requirements, the traditional approach is to modify the original source code. This often requires the programmer to have a detailed understanding of the original functions and data structures.
In contrast, software designed with an OOP language like TC or C++ should require very few modifications of the original code in the new situation. The programmer simply defines new classes derived from the original classes, with the required functionality. The programmer is required to understand the sorts of messages the original objects responded to, not the implementation of the objects.
This encourages the reuse of classes in new programming efforts, reducing